03 - CSS 基础
CSS 简介
- CSS(Cascading Style Sheets)是一种用于描述网页样式和布局的标记语言。它可以与 HTML 结合使用,用于美化并调整网页的外观和格式。
- CSS 通过控制网页元素的背景、颜色、字体、大小、间距、边框、布局和动画等方面,实现对页面进行样式和布局的精确控制。
- CSS 规则:CSS 由一组规则组成,每个规则包含选择器和一条或多条声明。选择器用于选择要应用样式的 HTML 元素,而声明则定义了选中元素所应用的样式。
- CSS 盒模型:HTML 元素可以被看作是位于矩形框中的内容组件。CSS 盒模型定义了一个元素的尺寸和元素之间的关系,包括内容区域、内边距、边框和外边距。
- 层叠和优先级:当多个样式同时应用于同一个元素时,层叠和优先级规定了应用哪个样式。层叠规则是基于特定规则的顺序,而优先级则是基于选择器的特定权重。
<!DOCTYPE html>
<html>
<head>
<title>CSS Introduction</title>
<style>
h1 {
color: blue;
font-size: 24px;
}
p {
color: red;
font-style: italic;
}
</style>
</head>
<body>
<h1>Hello, CSS!</h1>
<p>This is an example of CSS introduction.</p>
</body>
</html>
CSS 引入方式
-
在网页中引入 CSS 样式表的方式有三种:内联样式,内部样式表和外部样式表。
- CSS 引入方式的选择取决于具体的需求和项目规模。通常建议使用外部样式表,因为它能够将样式与内容分离,提高代码的可维护性和重用性。
- 内联样式适用于一些特定的样式调整。
- 内部样式表则适用于仅对特定页面或部分页面应用的样式。
-
内联样式(Inline Style):内联样式将 CSS 样式直接应用于 HTML 元素的
style属性中。这种方式的样式只适用于特定的元素,并且优先级最高。内联样式的语法为:<element style="property: value;">。<h1 style="color: blue;">Hello, CSS!</h1> -
内部样式表(Internal Style Sheet):内部样式表是放置在 HTML 文件的
<head>标签内的<style>标签中的 CSS 样式表。它适用于整个 HTML 文件,并且可以定义多个样式规则。内部样式表的语法为:<style type="text/css"> CSS code </style>。<head> <style type="text/css"> h1 { color: blue; } </style> </head> <body> <h1>Hello, CSS!</h1> </body> -
外部样式表(External Style Sheet):外部样式表是一个独立的.css 文件,通过在 HTML 文件中使用
<link>标签将其与文档关联起来。它可以在多个 HTML 文件中共享,并且具有最高的可维护性。外部样式表的语法为:<link rel="stylesheet" type="text/css" href="styles.css">。<head> <link rel="stylesheet" type="text/css" href="styles.css" /> </head> <body> <h1>Hello, CSS!</h1> </body>h1 { color: blue; }
选择器 1
标签选择器
-
标签选择器(Element Selector)使用 HTML 元素名称作为选择器,以选中并应用样式于所有对应该名称的 HTML 元素。标签选择器是 CSS 最基本和常用的选择器之一。
-
标签选择器的语法很简单,只需在 CSS 中使用 HTML 标签名称即可。例如,要应用样式于所有的段落(
<p>)元素,可以使用p作为选择器。p { color: blue; } -
使用标签选择器时需要注意,该选择器会作用于所有的对应类型的 HTML 元素,如果只需要作用于特定的元素,可以结合其他选择器一起使用。例如,使用标签选择器 p 来选择所有的段落元素,再结合类选择器
.classname来选择具有特定类名的段落元素。p.special { color: red; }
类选择器
-
类选择器(Class Selector)是一种用于选中具有特定类名的 HTML 元素的选择器。通过给 HTML 元素添加一个或多个类名,然后将类名与类选择器相匹配,就可以对特定的 HTML 元素应用样式。
-
类选择器的语法为:
.classname,其中.classname是要选中的类名。.highlight { color: red; font-weight: bold; } -
要使用类选择器,需要在 HTML 元素的
class属性中添加类名。可以为一个元素添加多个类名,类名之间用空格分隔。<p class="highlight">This paragraph is highlighted.</p> <p class="highlight other-class">This paragraph is also highlighted and has another class.</p> -
与标签选择器不同,类选择器是一种更直观和具有灵活性的选择器,可以根据实际需求为 HTML 元素添加和使用不同的类名。通过类选择器,可以为具有相同类名的多个 HTML 元素一次性添加样式,实现样式的重用和统一管理。
-
需要注意的是,类选择器的类名是区分大小写的,且类名不能以数字或特殊字符开头。同时,一个 HTML 元素可以同时拥有多个类名,这样可以更灵活地应用样式。
id 选择器
-
在 CSS 中,id 选择器(ID Selector)用于选中具有指定 id 的 HTML 元素。id 是 HTML 元素的唯一标识符,每个 HTML 元素的 id 在整个文档中应该是唯一的。
-
id 选择器的语法为:
#idname,其中#idname是要选中的 id 值。#header { background-color: gray; } -
要使用 id 选择器,需要在 HTML 元素的
id属性中指定 id 值。<div id="header">This is the header.</div> -
与类选择器不同,id 选择器是一种更特定和具有唯一性的选择器。一个页面中,相同的 id 值只能用于一个元素,因此 id 选择器可以用来选中特定的 HTML 元素,并为其应用样式。由于 id 具有唯一性,所以 id 选择器的优先级比其他选择器高。同时,id 选择器也可以用于为特定的 HTML 元素设置交互事件和动画效果。
-
需要注意的是,id 选择器的 id 值是区分大小写的,并且 id 值不能以数字或特殊字符开头。
通配符选择器
-
通配符选择器(Universal Selector)是一种用于选中所有 HTML 元素的选择器。通配符选择器使用* 作为选择器的表示符号。
-
通配符选择器的语法为:
*。* { margin: 0; padding: 0; } -
通配符选择器没有特定的属性或值,它会选中 HTML 文档中的所有元素,并将样式应用于这些元素。
-
通配符选择器适用于需要一次性对整个页面中的所有元素应用相同样式的情况。然而,由于它会选择所有的 HTML 元素,所以在使用通配符选择器时需要慎重考虑,避免对页面性能产生负面影响。
画盒子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>画盒子</title>
<style>
.red {
width: 100px;
height: 100px;
background-color: #f00;
}
.orange {
width: 200px;
height: 200px;
background-color: orange;
}
</style>
</head>
<body>
<div class="red">div1</div>
<div class="orange">div2</div>
</body>
</html>
字体
- 在 CSS 中,可以使用字体修饰属性(font property)来控制字体的样式和大小。
| CSS 属性 | 描述 | 常见值 |
|---|---|---|
font-style |
字体样式 | normal, italic, oblique |
font-weight |
字体粗细 | normal, bold, bolder, lighter |
font-size |
字体大小 | 绝对大小(px, pt, mm), 相对大小(em, rem) |
font-family |
字体族 | 字体名称(Arial, Helvetica, Times New Roman 等),多字体备选 |
font-variant |
字体变体 | normal, small-caps |
字体大小 font-size
-
字体大小(font-size)属性用于指定字体的大小。
-
字体大小属性的语法为:
font-size: value; -
字体大小(value)可以使用不同的单位进行表示,常见的有像素(px)、百分比(%)、ems(em)等。
h1 { font-size: 24px; /* 使用像素作为单位 */ } p { font-size: 16px; /* 使用像素作为单位 */ } div { font-size: 120%; /* 使用百分比作为单位 */ } span { font-size: 1.5em; /* 使用 ems 作为单位 */ } -
需要注意的是,字体大小属性是可以继承的,即子元素会继承父元素的字体大小。如果只希望子元素不继承父元素的字体大小,可以使用
inherit值来覆盖继承行为。div { font-size: 16px; } p { font-size: inherit; /* 继承父元素的字体大小 */ }
字体粗细 font-weight
- 使用
font-weight属性来控制字体的粗细程度,使得文本具有不同的视觉效果。这个属性可以接受以下几个值:normal:字体呈现标准的粗细程度(默认值)。bold:字体呈现粗体效果。bolder:字体比bold更加粗体,具体程度取决于字体的定义。lighter:字体比normal更薄一些,具体程度取决于字体的定义。- 数字值:使用数字值来定义字体的具体粗细程度,范围从 100 到 900,其中 400 通常等同于
normal,700 等同于bold。
<!DOCTYPE html>
<html>
<head>
<style>
/* 使用关键词 */
.normal {
font-weight: normal; /* 普通 */
}
.bold {
font-weight: bold; /* 粗体 */
}
.bolder {
font-weight: bolder; /* 更粗 */
}
.lighter {
font-weight: lighter; /* 稍微细一点 */
}
/* 使用数字值 */
.light {
font-weight: 200; /* 很轻 */
}
.extra-bold {
font-weight: 800; /* 非常粗 */
}
</style>
</head>
<body>
<p class="normal">这是普通的文本。</p>
<p class="bold">这是粗体文本。</p>
<p class="bolder">这是更粗的文本。</p>
<p class="lighter">这是稍微细一点的文本。</p>
<p class="light">这是很轻的文本。</p>
<p class="extra-bold">这是非常粗的文本。</p>
</body>
</html>
字体倾斜样式 font-style
- 使用
font-style属性来设置字体的倾斜样式,使得文本呈现不同的视觉效果。该属性可以接受以下几个值:normal:字体呈现标准的正常样式(默认值)。italic:字体呈现斜体效果。oblique:字体呈现倾斜效果,但不一定是真正的斜体。具体程度取决于字体的定义和支持。
<!DOCTYPE html>
<html>
<head>
<style>
.normal {
font-style: normal; /* 正常 */
}
.italic {
font-style: italic; /* 斜体 */
}
.oblique {
font-style: oblique; /* 倾斜 */
}
</style>
</head>
<body>
<p class="normal">这是正常的文本。</p>
<p class="italic">这是斜体文本。</p>
<p class="oblique">这是倾斜的文本。</p>
</body>
</html>
行高 line-height
- 使用
line-height属性来控制行号的行高,以实现不同的行号样式。 line-height属性用于设置文本行框的高度,通常是相对于字体的大小。通过调整line-height的值,可以通过设置合适的行高倍数来增加或减少行间距。以字体大小为基准调整行高,可以确保行号样式与文本内容的视觉效果相匹配。
<!DOCTYPE html>
<html>
<head>
<style>
.line-number {
line-height: 1.5; /* 行高为 1.5 倍字体大小 */
}
.tight-line {
line-height: 1; /* 行高为字体大小 */
}
.wide-line {
line-height: 2; /* 行高为 2 倍字体大小 */
}
</style>
</head>
<body>
<p class="line-number">这里是一行有行号的文本。</p>
<p class="tight-line">这里是行间距较小的文本。</p>
<p class="wide-line">这里是行间距较大的文本。</p>
</body>
</html>
字体族 font-family
- 使用
font-family属性来设置元素的字体族,即选择要在网页中显示的字体样式。 - 可以使用通用字体族(如衬线字体、非衬线字体和等宽字体)或者使用具体的字体名称。
- 字体族由字体名称列表组成,按照优先级的顺序列出。如果第一个字体在用户的系统中不可用,浏览器会尝试使用列表中的下一个字体,直到找到可用的字体。如果找不到可用的字体,浏览器将使用默认的字体来显示文本。
<!DOCTYPE html>
<html>
<head>
<style>
.serif-font {
font-family: "Times New Roman", Times, serif;
}
.sans-serif-font {
font-family: Arial, Helvetica, sans-serif;
}
.monospace-font {
font-family: "Courier New", Courier, monospace;
}
</style>
</head>
<body>
<p class="serif-font">这是衬线字体。</p>
<p class="sans-serif-font">这是非衬线字体。</p>
<p class="monospace-font">这是等宽字体。</p>
</body>
</html>
字体 font
-
通过
font属性可以一次性设置元素的多个字体属性,包括字体族、字体大小、字体加粗/斜体样式等。 -
font属性的语法如下:selector { font: font-style font-variant font-weight font-size/line-height font-family; } -
可以使用以下属性值:
font-style: 设置字体的风格,比如normal(默认)表示常规字体或斜体字体。font-variant: 设置字体的变体,比如normal(默认)表示常规字体或小型大写字母。font-weight: 设置字体的粗细,比如normal(默认)、bold或具体的数值(如 400 表示常规,700 表示粗体)。font-size: 设置字体的大小,比如12px。line-height: 设置行高,比如1.5。font-family: 设置字体族,通过指定一系列字体名称,以确保在用户系统上找到可用的字体。
<!DOCTYPE html>
<html>
<head>
<style>
.custom-font {
font: italic small-caps bold 20px/1.5 "Times New Roman", Times, serif;
}
</style>
</head>
<body>
<p class="custom-font">这是一个自定义的字体样式。</p>
</body>
</html>
文本
- CSS 中使用文本修饰属性来改变文本的外观。
| CSS 属性 | 描述 | 常见值 |
|---|---|---|
color |
文本颜色 | 颜色值(如 red, #000000) |
text-align |
文本对齐方式 | left, right, center, justify |
text-decoration |
文本修饰效果 | none, underline, overline, line-through |
text-transform |
文本转换效果 | none, capitalize, uppercase, lowercase |
line-height |
行高 | 数字、单位(如 1.5, 2em) |
letter-spacing |
字间距 | 数字、单位(如 1px, 0.2em) |
word-spacing |
词间距 | 数字、单位(如 1px, 0.2em) |
text-indent |
首行缩进 | 数字、单位(如 20px, 1em) |
white-space |
空白处理方式 | normal, nowrap, pre, pre-wrap, pre-line |
text-overflow |
文本溢出处理方式 | clip, ellipsis |
text-shadow |
文本阴影效果 | none, <offset-x> <offset-y> <blur-radius> <color> |
text-justify |
文本对齐方式(较少使用) | auto, inter-word, inter-ideograph, inter-cluster |
文本首行缩进 text-indent
-
使用
text-indent属性来设置文字的首行缩进。首行缩进是指段落中首行相对于其余行的水平偏移量。 -
语法:
selector { text-indent: length | percentage; } -
属性值:
length:用于指定以像素 (px)、英寸 (in)、厘米 (cm) 等为单位的首行缩进长度。percentage:用于指定以父元素宽度为基准的百分比值的首行缩进。
p { text-indent: 20px; /* 使用像素值指定首行缩进为 20 像素 */ text-indent: 2em; /* 使用相对单位 em 指定首行缩进为字体尺寸的 2 倍 */ text-indent: 50%; /* 使用百分比值指定首行缩进为父元素宽度的 50% */ }
<!DOCTYPE html>
<html>
<head>
<style>
.indent-20px {
text-indent: 20px;
}
.indent-50percent {
text-indent: 50%;
}
</style>
</head>
<body>
<p class="indent-20px">这是一个首行缩进为 20 像素的段落。</p>
<p class="indent-50percent">这是一个首行缩进为父元素宽度的 50% 的段落。</p>
</body>
</html>
文本对齐 text-align
-
使用文本对齐属性
text-align来控制文本的水平对齐方式。 -
属性值:
left:左对齐(默认值)。right:右对齐。center:居中对齐。justify:两端对齐,段落的每行都被拉伸以填充整个容器的宽度,除非该行仅包含一个单词。
<!DOCTYPE html>
<html>
<head>
<style>
.left-align {
text-align: left;
}
.right-align {
text-align: right;
}
.center-align {
text-align: center;
}
.justify-align {
text-align: justify;
}
</style>
</head>
<body>
<div class="left-align">这是左对齐的文本。</div>
<div class="right-align">这是右对齐的文本。</div>
<div class="center-align">这是居中对齐的文本。</div>
<div class="justify-align">这是两端对齐的文本。</div>
</body>
</html>
文本修饰线 text-decoration
- 使用文本修饰线属性
text-decoration来为文本添加装饰线,如下划线、删除线等。 - 属性值:
none:默认值,无修饰线。underline:下划线。overline:上划线。line-through:删除线。underline overline:同时显示下划线和上划线。
<!DOCTYPE html>
<html>
<head>
<style>
.underline {
text-decoration: underline;
}
.overline {
text-decoration: overline;
}
.line-through {
text-decoration: line-through;
}
</style>
</head>
<body>
<p class="underline">这是一段有下划线的文本。</p>
<p class="overline">这是一段有上划线的文本。</p>
<p class="line-through">这是一段有删除线的文本。</p>
</body>
</html>
文本颜色 color
- 使用文本颜色属性
color来设置文本的颜色。 - 属性值:
- 使用颜色关键字,如
color: blue;。 - 使用十六进制颜色值,如
color: #ff0000;。 - 使用 RGB 颜色值,如
color: rgb(255, 0, 0);。 - 使用 RGBA 颜色值,可以设置透明度,如
color: rgba(255, 0, 0, 0.5);。
- 使用颜色关键字,如
<!DOCTYPE html>
<html>
<head>
<style>
.red-text {
color: red;
}
.blue-text {
color: blue;
}
.green-text {
color: #00ff00;
}
.rgb-text {
color: rgb(255, 0, 0);
}
.rgba-text {
color: rgba(0, 0, 255, 0.5);
}
</style>
</head>
<body>
<p class="red-text">这段文本是红色的。</p>
<p class="blue-text">这段文本是蓝色的。</p>
<p class="green-text">这段文本是绿色的。</p>
<p class="rgb-text">这段文本是 RGB 红色的。</p>
<p class="rgba-text">这段文本是带有透明度的蓝色的。</p>
</body>
</html>
chrome 开发者工具
- Chrome 开发者工具是一套由 Google Chrome 浏览器内置的强大工具,用于帮助开发人员调试、优化和审查网页应用程序。它提供了多种功能,使开发人员能够实时查看和编辑网页的代码、样式和性能,从而更轻松地进行前端开发。
- 基本功能
- 元素面板(Elements Panel): 允许你检查和编辑页面的 HTML 和 CSS。你可以在此处查看 DOM 结构、修改元素样式、添加新的 HTML 元素等。
- 控制台(Console): 提供一个命令行界面,用于在 JavaScript 中输出调试信息、运行代码片段,甚至执行 AJAX 请求。你可以在这里查看错误消息和警告,以及进行交互式调试。
- 网络面板(Network Panel): 显示页面加载过程中发生的网络请求。你可以查看请求的详细信息,包括请求和响应头、数据大小、加载时间等,从而优化页面加载性能。
- 源代码面板(Sources Panel): 允许你查看和编辑页面中的 JavaScript 源代码,设置断点并进行调试。你还可以查看样式表、本地文件等。
- 性能面板(Performance Panel): 用于分析页面的性能,包括加载时间、CPU 使用情况、内存占用等。你可以录制页面的性能,以便进行详细分析和优化。
- 应用面板(Application Panel): 允许你查看和管理网页的存储,包括本地存储、会话存储、Cookies 等。
- 移动设备模拟(Device Emulation): 可以模拟不同设备的视口大小和用户代理,以便测试响应式设计和移动友好性。
- 在 Chrome 浏览器中,可以使用开发者工具来调试和修改 CSS 样式。
- 打开 Chrome 开发者工具: 在 Chrome 浏览器中,右键点击任意页面,选择 " 检查 " 或按下快捷键
Ctrl + Shift + I(Windows/Linux)或Cmd + Option + I(Mac)。 - 查看元素和样式: 在 "Elements" 面板中,你可以选择页面上的元素,查看其 HTML 结构和应用的 CSS 样式。在右侧的样式面板中,你可以修改元素的样式属性,实时观察变化。
- 在 HTML 结构中,选择想要调试 CSS 样式的元素。可以使用鼠标点击元素,或者在开发者工具中使用选择器工具选择元素。
- 在右侧的样式面板中,可以看到应用到选定元素的 CSS 样式。可以使用滚动条查看所有样式规则。
- 单击样式面板中的元素的样式规则,可以编辑样式属性的值。可以直接在样式文本框中编辑属性值,也可以添加新的属性。
- 在样式面板中,还可以禁用或启用样式规则,以及添加或移除样式属性。
- 打开 Chrome 开发者工具: 在 Chrome 浏览器中,右键点击任意页面,选择 " 检查 " 或按下快捷键
- 除了修改样式属性的值之外,还可以尝试以下调试 CSS 样式的功能:
- 导航到样式面板的 "Computed(计算)" 选项卡,可以查看应用到元素的所有计算样式属性。
- 使用 "Sources(源代码)" 和 "Network(网络)" 选项卡,可以查看和调试 CSS 文件及其加载顺序。
- 使用 "Box Model(边框模型)" 选项卡,可以查看元素的边框、内边距和尺寸信息。
综合案例 3
案例 - 新闻详情

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>新闻详情</title>
<style>
body {
font: 18px/1.5 "Microsoft YaHei", sans-serif;
color: #333;
}
h1 {
text-align: center;
font: 600 30px/1.5 "Microsoft YaHei", sans-serif;
}
.source {
color: #999;
font-size: 14px;
}
strong {
font-size: 18px;
}
p {
text-indent: 2em;
}
.pic {
text-align: center;
}
</style>
</head>
<body>
<h1>在希望的田野上 | 湖北秋收开镰 各地多举措保增产增收</h1>
<div class="source">来源:央视网 | 2222 年 12 月 12 日 12:12:12</div>
<p>
<strong>央视网消息:</strong>
眼下,湖北省秋收开镰已有一周多的时间。水稻收割已经超过四成,玉米收割七成。湖北省通过大力推广新品种水稻,建设高标准农田等一系列措施,为秋粮稳产提供有力支撑。
</p>
<p>中稻占据了湖北全年粮食产量的一半以上。在湖北的主产区荆门市,370 万亩中稻已经收割四成以上。</p>
<div class="pic">
<img src="https://picsum.photos/500/300" alt="" />
</div>
<p>
王化林说的新品种,是湖北省研发的杂交水稻“华夏香丝”,不仅产量高,还具有抗病、抗倒、抗高温的特性。在荆门漳河镇的一工程示范田内,像“华夏香丝”这样抗旱节水的品种还有
20 多个,这些水稻新品将在荆门全面推广,确保来年增产增收。
</p>
<p>
此外,湖北还大力推进高标准农田建设。截至今年 6 月,已建成 3980 万亩高标准农田。目前,湖北全省仍有 1800
多万亩中稻正在有序收割中,预计 10 月中旬收割完毕。
</p>
</body>
</html>
案例 - CSS 简介

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CSS简介</title>
<style>
body {
background-color: #f0f0f0;
color: #444;
font: 14px/30px "微软雅黑";
}
h1 {
color: #333;
}
a {
color: #0069c2;
}
p {
text-indent: 2em;
}
</style>
</head>
<body>
<h1>CSS(层叠样式表)</h1>
<p>
层叠样式表(Cascading Style Sheets,缩写为 CSS),是一种 <a href="#">样式表</a> 语言,用来描述 HTML 或 XML(包括如
SVG、MathML、XHTML 之类的 XML 分支语言)文档的呈现。CSS
描述了在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问题。
</p>
<p>
<strong>CSS 是开放网络的核心语言之一</strong>,由 W3C 规范 实现跨浏览器的标准化。CSS 节省了大量的工作。
样式可以通过定义保存在外部.css
文件中,同时控制多个网页的布局,这意味着开发者不必经历在所有网页上编辑布局的麻烦。CSS 被分为不同等级:CSS1
现已废弃,CSS2.1 是推荐标准,CSS3 分成多个小模块且正在标准化中。
</p>
<ul>
<li>CSS 介绍 如果你是 Web 开发的新手,请务必阅读我们的 CSS 基础 文章以学习 CSS 的含义和用法。</li>
<li>
CSS 教程 我们的 CSS 学习区 包含了丰富的教程,它们覆盖了全部基础知识,能使你在 CSS 之路上从初出茅庐到游刃有余。
</li>
<li>CSS 参考 针对资深 Web 开发者的 <a href="#">详细参考手册</a> ,描述了 CSS 的各个属性与概念。</li>
</ul>
</body>
</html>